package com.dxf.chepter10

/**
 * Scala 运行在java虚拟机上,特点:
 *  1 轻松实现和丰富的java类库互联互通
 *  2 支持面向对象和函数式编程
 *  3 它写出的程序像动态语言一样简洁
 *  4 简洁,高效,令人愉快
 *
 *  编程范式 :
 *   1 所有编程范式中,面向对象编程是最大赢家
 *   2 其实面向对象编程不是一种严格意义上的范式编程,严格意义上编程范式为 : 命令式编程,函数式编程,逻辑式编程,面向对象是上述交叉产物
 *   3 在传统语言设计中,只有命令式编程得到强调,递归很少出现
 *
 *   ===============================
 *
 */
object T138_使用递归方式编程_注意事项 {

  def main(args: Array[String]): Unit = {

   var count = BigInt(0)
    println(fbn(40))
    println("调用次数"+count)

    //40的时,递归后指数增长,调用次数很恐怖
    //重复计算时,就要考虑优化
    def fbn(n: BigInt): BigInt = {
      count+=1
      if (n == 1 || n == 2) 1
      else fbn(n - 1) + fbn(n - 2)
    }

  }




}
